package com.cib.icarus.desensitize.wrapper;

import com.cib.icarus.core.spi.Ordered;

public interface DesWrapper extends Ordered {

    /**
     * 脱敏方法
     *
     * @param source 需要脱敏的对象
     * @return 脱敏后的对象
     */
    Object desensitize(Object source);

    /**
     * 深度复制
     *
     * @param source 原对象
     * @return 深度拷贝后的对象
     */
    Object deepCopy(Object source);


    /**
     * 将对象转为字符串
     *
     * @param source 将对象转换为字符串形式
     * @return 字符串
     */
    default String showAsString(Object source) {
        return source.toString();
    }


    @Override
    default int getOrder() {
        return Ordered.LOWEST_PRECEDENCE;
    }
}
